'use strict';
// app/middleware/error_handler.js
module.exports = () => {
  return async function errorHandler(ctx, next) {
    try {
      await next();
    } catch (error) {
      // 所有的异常都在 app 上触发一个 error 事件，框架会记录一条错误日志
      ctx.app.emit('error', error, ctx);

      const status = error.status || 500;
      const message = status >= 500 ? '服务器繁忙请稍后在试' : error.message;

      ctx.response.status = status;
      ctx.body = {
        code: 0,
        message,
      };
    }
    // try {
    //   await next();
    // } catch (err) {
    //   // 所有的异常都在 app 上触发一个 error 事件，框架会记录一条错误日志
    //   ctx.app.emit('error', err, ctx);

    //   console.log(err);
    //   const status = err.status || 500;
    //   // 生产环境时 500 错误的详细错误内容不返回给客户端，因为可能包含敏感信息
    //   const error = status === 500 && ctx.app.config.env === 'prod'
    //     ? '服务端异常，请稍后再试'
    //     : err.message;
    //   console.log(err);

    //   // 从 error 对象上读出各个属性，设置到响应中
    //   ctx.response.status = status;
    //   ctx.body = {
    //     code: 0,
    //     message: error,
    //   };
    // }
  };
};
